define(function(require, exports, module) {
	require('./css/style.css')

	function initialize(dataURL) {
		return {
			template: require('./Widget.html'),
			props: {
				// 图片路径
				path: {
					type: String,
					default: 'common'
				}
			},
			data() {
				return {
					// 是否显示弹出层
					open: false,
					// 是否显示cropper
					visible: false,
					// 弹出层标题
					title: "修改头像",
					options: {
						img: '', //裁剪图片的地址
						autoCrop: true, // 是否默认生成截图框
						autoCropWidth: 200, // 默认生成截图框宽度
						autoCropHeight: 200, // 默认生成截图框高度
						fixedBox: true // 固定截图框大小 不允许改变
					},
					previews: {},
					uploadImgUrl: alluse.bigcenter + "/common/upload/" + this.path, // 上传的图片服务器地址
					headers: {
						Authorization: 'Bearer ' + $.cookie(common.getTokenKey())
					}
				};
			},
			methods: {
				// 编辑头像
				editCropper() {
					this.open = true;
				},
				// 打开弹出层结束时的回调
				modalOpened() {
					this.visible = true;
				},
				// 覆盖默认的上传行为
				requestUpload() {},
				// 向左旋转
				rotateLeft() {
					this.$refs.cropper.rotateLeft();
				},
				// 向右旋转
				rotateRight() {
					this.$refs.cropper.rotateRight();
				},
				// 图片缩放
				changeScale(num) {
					num = num || 1;
					this.$refs.cropper.changeScale(num);
				},
				// 上传预处理
				beforeUpload(file) {
					if (file.type.indexOf("image/") == -1) {
						this.msgError("文件格式错误，请上传图片类型,如：JPG，PNG后缀的文件。");
					} else {
						const reader = new FileReader();
						reader.readAsDataURL(file);
						reader.onload = () => {
							this.options.img = reader.result;
						};
					}
				},
				// 上传图片
				uploadImg() {
					this.$refs.cropper.getCropBlob(data => {
						let formData = new FormData();
						formData.append("file", data,this.uuid());
						$.ajax({
							url: this.uploadImgUrl,
							type: 'POST',
							dataType: 'json',
							data: formData,
							contentType : false,
							processData : false,
							success: (res) => {
								if (res.code === 200) {
									this.open = false;
									this.msgSuccess("上传成功");
									this.$emit("input", "/" + this.path + res.url);
									this.$emit("uploaded");
								} else {
									this.msgError(res.msg);
									this.loading.close();
								}
								this.visible = false;
							}
						});
					});
				},
				// 实时预览
				realTime(data) {
					this.previews = data;
				}
			}
		}
	}

	module.exports = {
		onload: initialize
	};
});
